package negocio;

import java.sql.SQLException;
import java.util.Iterator;

import repositorio.ConexaoBD;
import repositorio.RepositorioAmostra;
import dados.Amostra;
import excecoes.AmostraJaExisteException;
import excecoes.AmostraNaoExisteException;

public class ControladorAmostra {

	private RepositorioAmostra repositorio;

	public ControladorAmostra(ConexaoBD conexao){
		this.repositorio = new RepositorioAmostra(conexao);
	}

	public void cadastrar(Amostra amostra) throws SQLException, AmostraJaExisteException{

		boolean existe = this.existe(amostra);

		if(!existe){
			this.repositorio.inserir(amostra);
		}
		else{
			throw new AmostraJaExisteException();
		}
	}

	public void editar(Amostra amostra) throws SQLException{
		this.repositorio.editar(amostra);
	}

	public void remover(Amostra amostra) throws SQLException{
		this.repositorio.remover(amostra.getId());
	}
	
	public Amostra buscar(Amostra amostra) throws SQLException, AmostraNaoExisteException{
		Amostra temp = this.repositorio.buscar(amostra.getId());
		
		if(temp != null){
			return amostra;
		}
		else{
			throw new AmostraNaoExisteException();
		}
	}
	
	public Iterator<Amostra> getIterator() throws SQLException{
		return this.repositorio.iterator();
	}

	public boolean existe(Amostra amostra) throws SQLException{

		boolean retorno = false;

		Amostra temp = this.repositorio.buscar(amostra.getId());

		if(temp != null){
			retorno = true;
		}
		return retorno;
	}
}